package edu.mju.servicebase.handler;

import edu.mju.commonutils.ReturnCode;
import edu.mju.servicebase.exception.StuException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

/**
 * 统一异常处理
 * @Author:wyp
 * @Date:2020/8/24 18:20
 * Slf4j:使用logback日志
 */
@ControllerAdvice
@Slf4j
public class CenterExceptionHandler {
    /**
     *  全局异常处理
     * @param e Exception全局异常
     * @return json格式数据
     */
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public ReturnCode error(Exception e){
        e.printStackTrace();
        return ReturnCode.fail().message("全局异常处理！");
    }

    /**
     *  ArithmeticException异常处理
     * @param e ArithmeticException异常
     * @return json格式数据
     */
    @ResponseBody
    @ExceptionHandler(ArithmeticException.class)
    public ReturnCode error(ArithmeticException e){
        e.printStackTrace();
        return ReturnCode.fail().message("ArithmeticException异常处理！");
    }

    /**
     *  自定义StuException异常处理
     * @param e StuException异常
     * @return json格式数据
     */
    @ResponseBody
    @ExceptionHandler(StuException.class)
    public ReturnCode error(StuException e){
        e.printStackTrace();
        log.error(e.getMessage());
        return ReturnCode.fail().code(e.getCode()).message(e.getMessage());
    }
}
